package mil.nga.giat.chronostouch.pipe; import android.os.Parcelable; import com.google.android.gms.wearable.Asset; import com.google.android.gms.wearable.DataMap; import com.google.android.gms.wearable.PutDataMapRequest; import com.google.android.gms.wearable.PutDataRequest; import mil.nga.giat.chronostouch.utils.ParcelableToByteArrayUtil; public class DataMapRequest { private PutDataMapRequest dataMapRequest; public DataMapRequest(String path) { dataMapRequest = PutDataMapRequest.create(path); } public PutDataRequest asPutDataRequest() { return dataMapRequest.asPutDataRequest(); } public <T extends Object> boolean put(final String key, final T dataItem) { switch (dataItem.getClass().getSimpleName()) { case "Asset": dataMapRequest.getDataMap().putAsset(key, (Asset) dataItem); break; case "Boolean": case "boolean": dataMapRequest.getDataMap().putBoolean(key, (Boolean) dataItem); break; case "Byte": case "byte": dataMapRequest.getDataMap().putByte(key, (Byte) dataItem); break; case "DataMap": dataMapRequest.getDataMap().putDataMap(key, (DataMap) dataItem); break; case "Double": case "double": dataMapRequest.getDataMap().putDouble(key, (Double) dataItem); break; case "Float": case "float": dataMapRequest.getDataMap().putFloat(key, (Float) dataItem); break; case "Gesture": dataMapRequest.getDataMap().putByteArray(key, ParcelableToByteArrayUtil.toByteArray((Parcelable) dataItem)); break; case "Integer": case "int": dataMapRequest.getDataMap().putInt(key, (Integer) dataItem); break; case "Long": case "long": dataMapRequest.getDataMap().putLong(key, (Long) dataItem); break; case "String": dataMapRequest.getDataMap().putString(key, (String) dataItem); break; default: return false; } return true; } }